/*
 * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 *
 *     http://aws.amazon.com/apache2.0/
 *
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */
import { InteractionsOptions } from './Interactions';
import { InteractionsResponse } from './Response';

export interface InteractionsProvider {
	// configure your provider
	configure(config: object): object;

	// return 'Interactions'
	getCategory(): string;

	// return the name of your provider
	getProviderName(): string;

	sendMessage(botname: string, message: string | Object): Promise<object>;

	onComplete(
		botname: string,
		callback: (err: any, confirmation: InteractionsResponse) => void
	);
}

export interface InteractionsProviders {
	[key: string]: InteractionsProvider;
}
